24 August, 2019
Git - is a distributed version control system
Git - stores snapshots of the filesystem
Files can be in one of four states:
Files can be in one of four states:
Files can be in one of four states:
Files can be in one of four states:
This is a once off action
git config --global user.name "Your name" git config --global user.email "your_email@whatever.com"
mkdir ~/tmp/Test_repo cd ~/tmp/Test_repo
git init
## Initialized empty Git repository in /home/murray/tmp/Test_repo/.git/
Create a file (text, code etc)
x=seq(1, 10, len=1) y=40*2 + rnorm(10,0,5) plot(x,y)
Otherwise, create any kind of file (in the folder we just created)
Stage the changes (add)
git add <file(s)>
For example:
git add analysis.R
git commit -m 'Initial commit'
## [master (root-commit) 5f2f4eb] Initial commit ## 1 file changed, 3 insertions(+) ## create mode 100644 analysis.R
x=seq(1, 10, len=1) y=40*2 + rnorm(10,0,5) plot(x,y) summary(x)
## [master 93a12d7] Added summary for x ## 1 file changed, 1 insertion(+)
analysis.R
x=seq(1, 10, len=1) y=40*2 + rnorm(10,0,5) plot(x,y)
summary.R
summary(x) summary(y)
## [master b729ed7] Added summaries for x and y ## 2 files changed, 2 insertions(+), 1 deletion(-) ## create mode 100644 summary.R
git log --oneline --graph --decorate
## * b729ed7 (HEAD -> master) Added summaries for x and y ## * 93a12d7 Added summary for x ## * 5f2f4eb Initial commit
git tag -a <tag> -m <message>
For example:
git tag -a 'V.1' -m 'Version 1'
checkout
reset
revert
git checkout #
# is a commit or tag name
git checkout 93a1
Restore the HEAD to the tip of master
git checkout master
## Previous HEAD position was 93a12d7 Added summary for x ## Switched to branch 'master'
git reset --hard #
# is a commit or tag name
cd ~/tmp/Test_repo git reset --hard 93a1
Restore HEAD to the tag V.1
git reset --hard V.1
## HEAD is now at b729ed7 Added summaries for x and y
git revert HEAD --no-edit
## [master 011113f] Revert "Added summaries for x and y" ## Date: Sat Aug 24 17:32:39 2019 +1000 ## 2 files changed, 1 insertion(+), 2 deletions(-) ## delete mode 100644 summary.R
git revert --no-commit HEAD git revert --no-commit HEAD~1 git commit -m 'Rolled back'
git checkout -b <Name>
For example
git checkout -b Experimental
We are on the new branch
x=seq(1, 10, len=1) y=40*2 + rnorm(10,0,5) plot(x,y) summary(x) mean(x)
Otherwise, create any kind of file (in the folder we just created)
git checkout <Name>
For example:
git checkout master
We are on the master branch
mean(c(1,2,3))
Otherwise, create any kind of file
git log --online --graph --decorate --all
git diff master <branch>
For example:
git diff master Experimental
## diff --git a/analysis.R b/analysis.R ## index 9b5dda9..660b1bc 100644 ## --- a/analysis.R ## +++ b/analysis.R ## @@ -2,3 +2,4 @@ x=seq(1, 10, len=1) ## y=40*2 + rnorm(10,0,5) ## plot(x,y) ## summary(x) ## +mean(x) ## diff --git a/test.R b/test.R ## deleted file mode 100644 ## index 0242716..0000000 ## --- a/test.R ## +++ /dev/null ## @@ -1 +0,0 @@ ## -mean(c(1,2,3))
git merge <Name>
For example:
cd ~/tmp/Test_repo git merge Experimental -m 'Merge master and Experimental'
## Merge made by the 'recursive' strategy. ## analysis.R | 1 + ## 1 file changed, 1 insertion(+)
Use the shell
cd ~/tmp/Test_repo git remote add origin https://github.com/pcinereus/Test.git git push -u origin master
Use the shell ….. Um Luke!
Lets make a small change to one of the files..
mean(c(1,2,3)) sd(c(1,2,3))
Otherwise, create any kind of file
git push -u origin master
git clone <git name> <local name>
Before making any changes that you intend to push, it is advisable that you pull to get the latest from the remote
git pull -v origin master
Clone the Test repo of the person next to you
Make a change, commit, push
Pull the changes of your neighbour
Try making a branch